<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>高阶函数</title>
    <script>
        /* 
            如果一个函数的参数或返回值是函数，那么这个函数就是高阶函数。
            为什么要将函数做为参数传递？（有什么作用？）
                将函数做为参数，可以动态的执行代码

            可以通过高阶函数来动态的生成一个新函数
            回调函数是一个特殊的函数，它作为参数传递给另一个函数，并在该函数完成其任务后被调用。
        */

        // 希望在fn()函数执行时，在不修改原函数的基础上，可以记录一个日志
        const fn=()=>{
            return 'hello'
        }


        const fn2=(cb)=>{

            return ()=>{
                console.log('记录日志')
                const result=cb()
                return result
            }
            
        }
        let result=fn2(fn) 
        console.log(result())


        function test(){
            console.log('test')
            return 'test'
        }

        let newTest =fn2(test)
        newTest()
    </script>
</head>
<body>
    
</body>
</html>